//
//  LWWelcomeViewController.swift
//  LW_Weibo
//
//  Created by 刘伟 on 16/7/12.
//  Copyright © 2016年 LWSpro. All rights reserved.
//

import UIKit
import SDWebImage

class LWWelcomeViewController: UIViewController {

    
    //MARK: - 懒加载 背景图片
    //懒加载其实就是重写get方法  只会走一次
    private lazy var bgImageView: UIImageView = {
        
        let bgImageView = UIImageView(image: UIImage(named: "ad_background"))
        
        
        return bgImageView
        
    }()
    
    
    private lazy var headImageView: UIImageView = {
        
        //这里赋值图片只是用于占位,显示出来的是没有网络时的图片  我们真正要显示的是从网上获取到的用户头像
        let headerImageView = UIImageView(image: UIImage(named: "avatar_default_big"))
        
        //获取头像的网址
        //判断头像网址是否存在
        if let imageUrl = LWUserAccountViewModel.sharedUserAccount.userAccount?.avatar_large {
            
            
//            print(imageUrl)
            
            //网址存在  那么就直接拿到头像 然后替换 占位符上的图片  placeholderImage 占位图片
            headerImageView.sd_setImageWithURL(NSURL(string: imageUrl), placeholderImage: UIImage(named: "avatar_default_big"))

        }
        
        
        //倒圆角
        headerImageView.layer.cornerRadius = 42.5
        headerImageView.layer.masksToBounds = true
        

        
        return headerImageView
        
    }()
    
    
    private var userNameLabel: UILabel = {
        
        let userNameLabel = UILabel()
        
        //设置字体大小
        userNameLabel.font = UIFont.systemFontOfSize(15)
        
        //字体颜色
        userNameLabel.textColor = UIColor.orangeColor()
        
        //获取保存的用户名
        if let userName = LWUserAccountViewModel.sharedUserAccount.userAccount?.name { //如果用用户名 那么就直接复赋值
            
            print(userName)
            userNameLabel.text = "欢迎回来,\(userName)"
            
            
        }else { //如果没有  那么就显示
            
            userNameLabel.text = "欢迎回来"
            
        }
        
        
        //设置一下透明度  等动画结束时,在将透明度恢复
        userNameLabel.alpha = 0
        
        return userNameLabel
        
    }()
    
    
    
    override func loadView() { //越早越好
        
        super.loadView()
        //更换view  将背景view赋值给 当前的view
        view = bgImageView
        
        
    }
    
    
    override func viewDidLoad() {
        super.viewDidLoad()

      setupUI()
        
        
    }
    
    
    
    //MARK: - view已经显现
    override func viewDidAppear(animated: Bool) {
        
        super.viewDidAppear(animated)
        
        //  执行动画
        startAnimation()

        
        
    }
    
    private func setupUI() {
        
//        super.viewDidLayoutSubviews()
        
        //添加到父视图中
        view.addSubview(headImageView)
        view.addSubview(userNameLabel)
        
        
        
     
        
        
        headImageView.snp_updateConstraints { (make) -> Void in
            
            //顶部距离父控件的顶部约束
            make.top.equalTo(self.view).offset(200)
            make.centerX.equalTo(self.view)
            make.size.equalTo(CGSize(width: 85, height: 85))
            
        }
        
        
        userNameLabel.snp_makeConstraints { (make) -> Void in
            
            make.top.equalTo(headImageView.snp_bottom).offset(10)
            make.centerX.equalTo(headImageView)
            
        }
        
    }
    

    //动画  动画要在view显现出来的时候调用
    private func startAnimation() {
        
        //改变头像的约束就行  这时用户名会跟着改动
        self.headImageView.snp_makeConstraints { (make) -> Void in
            
            make.top.equalTo(self.view).offset(100)
            
        }
        
        //usingSpringWithDamping 阻尼, 取值范围0-1, 阻尼越大弹簧效果越小
        //initialSpringVelocity 初始速度
        //枚举不想使用直接输入[]
         //使用弹簧动画
        UIView.animateWithDuration(1, delay: 0, usingSpringWithDamping: 0.7, initialSpringVelocity: 0, options: [], animations: { () -> Void in
            
            //要更改约束  就必须执行下面这个方法
            self.view.layoutIfNeeded()
            
            }) { (_) -> Void in //动画执行完毕 就要跳转到主控制器去显示内容了  发送通知 让app自己切换控制器
                
                UIView.animateWithDuration(1, animations: { () -> Void in
                    
                    //让userNameLabel的透明度恢复
                    self.userNameLabel.alpha = 1
                    
                    
                    }, completion: { (_) -> Void in
                        
                        NSNotificationCenter.defaultCenter().postNotificationName(SwitchRootVCNotification, object: nil)
                        

                        
                        
                })
                
                
                
        }
        
        
        
    }
    
    
  
}
